// 文件名: src/api/modules/device.ts
// 块功能: 设备管理 (Devices) 模块 API
// 描述: 包含设备的增、删、改、查以及分类查询等接口。

import service from '../request'
import type { PageResponse } from '../types/common'
import type {
  Device,
  DeviceCategory,
  DeviceListParams,
  DeviceCreate,
  DeviceUpdate,
} from '../types/device'

/**
 * @功能: 分页筛选设备列表
 * @param params 查询参数
 */
export const getDeviceListApi = (params: DeviceListParams): Promise<PageResponse<Device>> => {
  return service.get('/api/admin/devices/', { params })
}

/**
 * @功能: 【新增】获取所有设备的完整信息列表 (用于下拉选择框等)
 * @描述: 这是一个不分页的接口，直接返回设备对象的数组。
 */
export const getAllDevicesApi = (): Promise<Device[]> => {
  return service.get('/api/admin/devices/all')
}

/**
 * @功能: 新增设备
 * @param data 设备创建数据
 */
export const createDeviceApi = (data: DeviceCreate): Promise<Device> => {
  return service.post('/api/admin/devices/', data)
}

/**
 * @功能: 获取单个设备详情
 * @param id 设备 ID
 */
export const getDeviceDetailApi = (id: number): Promise<Device> => {
  return service.get(`/api/admin/devices/${id}`)
}

/**
 * @功能: 更新设备信息
 * @param id 设备 ID
 * @param data 设备更新数据
 */
export const updateDeviceApi = (id: number, data: DeviceUpdate): Promise<Device> => {
  return service.put(`/api/admin/devices/${id}`, data)
}

/**
 * @功能: 删除设备
 * @param id 设备 ID
 */
export const deleteDeviceApi = (id: number): Promise<void> => {
  // 后端返回 204 No Content，所以 Promise 的泛型为 void
  return service.delete(`/api/admin/devices/${id}`)
}

/**
 * @功能: 获取所有设备分类
 */
export const getAllDeviceCategoriesApi = (): Promise<DeviceCategory[]> => {
  return service.get('/api/admin/devices/categories/all')
}
